package com.tedu.api.list;
import org.junit.Test;

import java.util.*;
/**链表实现集合   包位置 ：Java.util
 * List集合---三个实现类
 * ArrayList  实现类：数组实现
 *               特点：查询快【按照下标】  增删慢【改动下标：元素】
 * LinkedList   特点：查询慢【按照下标】    增删快【首、尾元素，中间元素】
 * ArrayList与 LinkedList大部分完全一致；
 * 添加  ：add()   获取:get()   删除：remove()
 * size():获取集合总数   clear():清空集合元素
 * 不一致的方法：
 * indexOf() lastIndexOf
 * addFirst()     返回值：void
 * 作用：将我们指定的元素添加至链表头部
 * addLast()      返回值：void
 * 作用：将我们指定的元素添加至链表尾部
 * removeFirst()
 * removeLast()
 */

public class LinkedListAPI {
    @Test
    public void testIndexOf(){
        //创建集合：---双向链表集合
        List<String> list=new LinkedList<>();
        list.add("三吱");
        list.add("龙虎斗");
        list.add("螺蛳粉");
        list.add("庵汤");
        /**ArrayList与LinkedList通用方法
         * IndexOf()   返回值：int
         * 作用：返回指定元素在集合中第一次出现的索引位置
         *           【理解：返回元素的下标位】
         */
        int index=list.indexOf("庵汤");
        /**
         * LinkedList独有方法
         * LastIndexOf()   返回值：int
         * 作用：返回指定元素在集合中第一次出现的索引位置
         */
        int lastIndex= list.lastIndexOf("庵汤");
        System.out.println("返回最后元素的下标："+lastIndex);
    }
    @Test
    public void testAR(){
        //创建集合：---双向链表集合
        List<String> list=new LinkedList<>();
        list.add("三吱");
        list.add("龙虎斗");
        list.add("螺蛳粉");
        list.add("庵汤");
      //LinkedList独有方法
        ((LinkedList)list).addFirst("榴莲");
        ((LinkedList)list).addLast("甜点");
        ((LinkedList) list).removeFirst();
        System.out.println("双向链表："+list);

    }
}
